/*
 *  scalar.h
 *  T3nsors2
 *
 *  Created by Michael Barriault on 10-06-16.
 *  Copyright 2010 University of Guelph. All rights reserved.
 *
 */

#ifndef SCALAR_HEADER
#define SCALAR_HEADER
#include <vector>
#include <string>
using std::string;

namespace t3 {
	class domain;
	class scalar {
	private:
		scalar(void);
		~scalar(void);
		std::vector<double> *T;
		int count;
	public:
		string id;
		domain* O;
		static scalar* init(domain*,string);
		scalar* copy(scalar*);
		scalar* retain(void);
		void release(void);
		double& at(int);
		double& pt(int,...);

	};

	scalar* linC(double,scalar*,string id="");
	scalar* linC(double,scalar*,double,scalar*,string id="");
	scalar* linC(double,scalar*,double,scalar*,double,scalar*,string id="");
}

#endif
